﻿using Mjolnir.InfraEstrutura.Entidades;
using Mjolnir.InfraEstrutura.Fabricas;

namespace Mjolnir.InfraEstrutura.Servicos
{
  public class ServicoBase<E, F> : IServicoBase
    where E : IEntidade
    where F : IFabrica<E>
  {
    /// <summary>
    /// Gets/sets a entidade.
    /// </summary>
    /// <value>entidade.</value>
    public E entidade { get; set; }

    /// <summary>
    /// Gets/sets a fabrica.
    /// </summary>
    /// <value>fabrica.</value>
    protected F fabrica { get; set; }

    /// <summary>
    /// Inicializa uma nova instância da classe.
    /// </summary>
    public ServicoBase()
    {
      fabrica = ConstrutoraFabrica<E, F>.criarFabrica();
    }
  }

  public class ServicoBase<E> : IServicoBase
    where E : IEntidade
  {
    /// <summary>
    /// Gets/sets a entidade.
    /// </summary>
    /// <value>entidade.</value>
    public E entidade { get; set; }
  }
}
